home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / NTUMIN10.ARJ / READK.C < prev    next >
C/C++ Source or Header  |  1992-03-12  |  4KB  |  119 lines

  1. /**************************************************************************
  2.  *
  3.  *      Program name : READK.C
  4.  *
  5.  *    Written By : Eng-Huat Ong and Kian-Mong Low.
  6.  *
  7.  *      This program reads the ON and DC arrays from keyboard input and
  8.  *      stores them in an ASCII file "in.dat".
  9.  *
  10.  * --------------------------------------------------------------------------
  11.  *    Copyright (c) 1992. All Rights Reserved. Nanyang Technological
  12.  *    University.
  13.  *
  14.  *    You are free to use, copy and distribute this software and its
  15.  *    documentation providing that:
  16.  *
  17.  *        NO FEE IS CHARGED FOR USE, COPYING OR DISTRIBUTION.
  18.  *
  19.  *        IT IS NOT MODIFIED IN ANY WAY.
  20.  *
  21.  *        THE COPYRIGHT NOTICE APPEAR IN ALL COPIES.
  22.  *
  23.  *    This program is provided "AS IS" without any warranty, expressed or
  24.  *    implied, including but not limited to fitness for any particular
  25.  *    purpose.
  26.  *
  27.  *    If you find NTUMIN fast, easy, and useful, a note or comment would be
  28.  *    appreciated. Please send to:
  29.  *
  30.  *        Boon-Tiong Tan or Othman Bin Ahmad
  31.  *        School of EEE
  32.  *        Nanyang Technological University
  33.  *        Nanyang Avenue
  34.  *        Singapore 2263
  35.  *        Republic of Singapore
  36.  *
  37.  ***************************************************************************/
  38.  
  39. #include <stdio.h>
  40. #include <stdlib.h>
  41. #include <string.h>
  42.  
  43. void           readk(ondc,n)
  44. unsigned char  ondc, n;
  45.  
  46. {
  47.    unsigned short  i=0, p;
  48.    unsigned char   *cube, error, j;
  49.    void            errsound();
  50.    FILE            *in;
  51.  
  52.  
  53.    if (ondc == 0)                                      /* ON array */
  54.       {
  55.      if ((in = fopen("in.dat", "w+")) == NULL)     /* open input file */
  56.         {
  57.            printf("Error opening file, in.dat.\n");
  58.            printf("Program terminated\n");
  59.            exit(0);
  60.         }
  61.      fprintf(in, "%d\n", n);                       /* print to file */
  62.       }
  63.    else                                                /* DC array */
  64.       if ((in = fopen("in.dat", "a")) == NULL)   /* open input file as 'append' */
  65.      {
  66.         printf("Error opening file, in.dat.\n");
  67.         printf("Program terminated\n");
  68.         exit(0);
  69.      }
  70.  
  71.    printf("Enter number of cubes -> ");
  72.    scanf("%d", &p);                            /* read cubes from keyboard */
  73.    fprintf(in, "%d\n", p);                     /* and print to input file */
  74.  
  75.    cube = (unsigned char *) malloc(n+10);      /* space for cube + 10 */
  76.    if (cube==0)
  77.       {
  78.      printf("Out of memory -- READK, *cube \n");
  79.      printf("Program terminated - 1\n");
  80.      exit(0);
  81.       }
  82.  
  83.    while (++i <= p)                             /* do for all cubes */
  84.       {
  85.      error = 0;                             /* reset to no error */
  86.      printf("Enter cube number %d -> ", i);
  87.      scanf("%s", cube);                     /* get cube from keyboard */
  88.  
  89.      if (strlen(cube) != n)                 /* wrong no. of var */
  90.         {
  91.            errsound();
  92.            printf("Invalid number of variables !\n");
  93.            i--;
  94.            error = 1;                      /* set error status */
  95.         }
  96.  
  97.      else
  98.         {
  99.            for (j=0; j<n; j++)               /* check fo valid char */
  100.           {
  101.              if (*(cube+j)!='1' && *(cube+j)!='0' && *(cube+j)!='x' && *(cube+j)!='X')
  102.             {
  103.                errsound();
  104.                printf("Invalid character(s) in input !\n");
  105.                i--;
  106.                error = 1;            /* set error status */
  107.                break;
  108.             }
  109.           }
  110.         }
  111.  
  112.      if (!error)                        /* no error, print to file */
  113.      fprintf(in, "%s\n", cube);
  114.       }
  115.  
  116.    free(cube);                /* free pointer */
  117.    fclose(in);                /* close file */
  118. }
  119.